/* 
 * File:   LogMessage.h
 * Author: Gab'z
 *
 * Created on 2 mai 2012, 23:21
 */

#ifndef LOGMESSAGE_H
#define	LOGMESSAGE_H

#include <string>

namespace calculator {

    /**
     * Un LogMessage est une entrée de journalisation.
     * Il contient l'ensemble des informations nécessaires pour ête affiché.
     */
    class LogMessage {
    public:

        /**
         * Constructeur de LogMessage.
         * @param level le niveau d'alerte du LogMessage, {0, 1 ,2} = {TRACE, DEBUG, ERROR} @see LogSystem.
         * @param message le message à afficher.
         * @param classname le nom de la classe qui publie un LogMessage.
         */
        LogMessage(int level, const std::string& message, const std::string& classname) :
        _level(level),
        _message(message),
        _classname(classname) {
        }

        /**.
         * getter Level.
         * @return Le niveau d'alerte du message.
         */
        int getLevel() const {
            return _level;
        }

        /**
         * getter Classname.
         * @return le nom de la classe à l'origine du LogMessage.
         */
        std::string getClassname() const {
            return _classname;
        }

        /**
         * getter Message.
         * @return le contenu du message.
         */
        const std::string& getMessage() const {
            return _message;
        }

        /**
         * Destructeur de LogMessage.
         * Aucun objet à détruire
         */
        virtual ~LogMessage() {
        }
        
    private:
        /**
         * Le niveau d'alerte du message.
         */
        const int _level;
        
        /**
         * Le contenu du message.
         */
        const std::string _message;
        
        /**
         * Le nom de la classe à l'origine du message.
         */
        const std::string _classname;
    };
}
#endif	/* LOGMESSAGE_H */
